export default{
  // 小仓库
  // 开启命名空间
  namespaced: true, 
  // 设置全局进行访问的state对象
  state:()=>({
    cart:JSON.parse(uni.getStorageSync('cart') || '[]')
    // cart:[]
  }),
  // 进行修改状态
  mutations: {
    // 增加购物中的商品数量
    // 参数说明 state表示这个组件设置的全局的配置的参数值,传入才能进行使用,但是
    addToCart(state,goods){
      // 判断购物车中是否存在这个商品
      const findResult= state.cart.find(x => x.goods_id===goods.goods_id)
      // 购物车中不存在这个商品,增加这个商品到购物车
      if(!findResult){
        console.log("不存在");
        state.cart.push(goods)
      }else{
        // 购物车中存在这个商品,对数值进行+1
        console.log('存在');
        findResult.goods_count++
      }
      // 进行调用持久化存储方法 store仓库中的自定义的m_car中的saveToDtorage方法
      this.commit('m_cart/saveToDtorage')
    },
    // 对于数据购物车数据进行持久化存储
    saveToDtorage(state){
      uni.setStorageSync('cart',JSON.stringify(state.cart))
    },
    
    // 勾选购物车中商品的勾选状态
    updateGodsState(state,goods){
      // 判断购物车中是否存在这个商品
      const findResult= state.cart.find(x => x.goods_id===goods.goods_id)
      // 如果存在这个商品
      if(findResult){
        // 更新状态
        findResult.goods_state=goods.goods_state
        // 进行调用持久化存储方法 store仓库中的自定义的m_car中的saveToDtorage方法
        this.commit('m_cart/saveToDtorage')
      }
    },
    
    //更新商品的数量
    updateGoodsCount(state,goods){
      // 判断购物车中是否存在这个商品
      const findResult= state.cart.find(x => x.goods_id===goods.goods_id)
      // 如果存在这个商品
      if(findResult){
        // 更新状态
        findResult.goods_count=goods.goods_count
        // 进行调用持久化存储方法 store仓库中的自定义的m_car中的saveToDtorage方法
        this.commit('m_cart/saveToDtorage')
    }
  },
  
  //删除购物的商品
    removeGoodsById(state, goods_id){
      console.log("进行删除");
      // 调用数组的filter方法进行过滤
      state.cart = state.cart.filter(x => x.goods_id!==goods_id)
      this.commit('m_cart/saveToDtorage')
  },
  
  //根系购物车中所有商品的勾选状态
  updataAllGoodsState(state,newState){
    state.cart.forEach(x=>x.goods_state=newState)
     this.commit('m_cart/saveToDtorage')
  }
  
},
  //计算属性
  getters: {
    // 对购物车所有商品数量的总数量进行了求和
    total(state){
      console.log(state);
      let c=0
      state.cart.forEach(x=>c+=x.goods_count)
      return c
    },
    //购物车中已勾选商品的总数量
    checkedCount(state){
      return state.cart.filter(x=>x.goods_state).reduce((total,item)=> total+=item.goods_count ,0)
    },
    
    // 计算勾选商品的总价格
    checkedCountAmount(state){
      console.log('开始计算');
     return state.cart.filter(x=>x.goods_state).reduce((total,item) => total+=item.goods_count*item.goods_price,0 ).toFixed(2)
    }
  }

}